Operator Library: Hardware Platform
이 오퍼레이터는 CXP 카메라와 VisualApplets 간의 이미지 데이터 인터페이스를 나타냅니다. 단일 채널, 듀얼 채널 또는 쿼드 채널 CXP 인터페이스에 사용할 수 있습니다. 인터페이스 유형은 ConnectionCount 파라미터로 선택됩니다. 이 오퍼레이터는 카메라가 전달하는 포맷에 관계없이 원본(raw) 이미지 데이터를 출력합니다. 그런 다음 이 이미지 데이터를 카메라가 전송한 포맷으로 변환해야 합니다. 이미지 데이터를 변환하려면 원본 바이트 값을 픽셀 값으로 집계하고 캐스팅하는 데 적절한 오퍼레이터를 사용하십시오. 작동 중 특정 상황은 아래 설명된 대로 이벤트 시스템을 통해 전달될 수 있습니다. 또한 이 오퍼레이터에는 카메라와의 연결 상태를 신호로 전달하는 다양한 파라미터가 있습니다.
오퍼레이터가 프레임이 CXP 이미지 헤더에서 카메라가 알린 것보다 크거나 작다는 것을 감지하면 안전 회로가 활성화됩니다. 그러면 오퍼레이터가 초과하는 픽셀과 라인을 잘라내어 VisualApplets가 이미지 헤더에 정의된 프레임 크기를 항상 인식할 수 있도록 합니다. 프레임의 치수가 이미지 헤더에 지정된 것보다 작은 경우, 오퍼레이터는 이미지 헤더에 정의된 지정된 프레임 치수를 달성하기 위해 수신된 프레임을 정의되지 않은 데이터로 채웁니다. 더 작은 프레임을 채우면 후속 프레임이 손실될 수 있습니다. 손실은 이벤트별로 소프트웨어에 보고되며, 크기 불일치 또한 이벤트를 발생시킵니다.
| 하드웨어 플랫폼별 지원 여부 |
|---|
| imaFlex CXP-12 Penta |
| imaFlex CXP-12 Quad |
VisualApplets에서의 인스턴스화
오퍼레이터는 출력 O로 이미지 데이터를 제공합니다. 이 출력은 항상 존재합니다. 이 표준 출력 포트 외에도 CXP 헤더 메타데이터를 위한 선택적 MetaDataO 출력을 구성할 수 있습니다. 오퍼레이터 인스턴스화 중에 다음 팝업 대화상자가 나타납니다.

여기서 선택적 메타데이터 포트를 지정할 수 있습니다. 포트 가용성을 "0"(기본값)으로 설정하면 오퍼레이터에 포트가 표시되지 않습니다. 포트 가용성을 1로 설정하면 오퍼레이터 인터페이스에서 메타데이터 포트를 사용할 수 있습니다.
선택적 MetaDataO 포트
32비트 출력 포맷은 다음 그림에 나와 있습니다.

각 CXP 프레임은 오류가 없는 해당 이미지 헤더를 제공합니다. 잘못된 이미지 헤더의 경우, 이미지 스트림 데이터가 VisualApplets 파이프라인으로 소싱되지 않습니다. 압축된 이미지 헤더는 6개 워드로 구성됩니다. 마지막 바이트는 내부 용도로만 사용되는 추가 정보를 위해 예약되어 있습니다. 특히 HeaderError 비트는 이미지 헤더 자체에 오류가 발생했는지 여부를 알려줍니다.
| 이미지 헤더 | 설명 |
|---|---|
| StreamId | CXP 스트림의 ID |
| 태그 | 16비트 소스 이미지 인덱스. 전송되는 각 이미지마저 증가하며, 0xFFFF에서 0으로 롤오버됩니다. 동일한 이미지와 관련된 데이터를 포함하는 각 스트림(멀티 탭 스트림의 경우)에 동일한 숫자를 사용해야 합니다. |
| XSize | 픽셀 단위의 이미지 너비를 나타내는 24비트 값입니다. |
| XOff | 전체 디바이스 이미지의 가장 왼쪽 픽셀을 기준으로 한 이미지의 수평 오프셋을 픽셀 단위로 나타내는 24비트 값입니다. |
| YSize | 픽셀 단위의 이미지 높이를 나타내는 24비트 값입니다. 라인 스캔 이미지의 경우 이 값은 0으로 설정됩니다. CameraScanMode 파라미터는 이 값에서 읽어온 카메라 유형을 항상 보여줍니다. O.Img Protocol이 VALT_LINE1D로 설정된 경우 처리를 위해 YSize가 무시되며, 오퍼레이터는 들어오는 모든 데이터를 끝없는 라인 스트림으로 출력합니다. 이미지 프로토콜이 VALT_IMAGE2D로 설정된 경우 YSize=0 역시 끝없는 라인 스트림을 유발합니다. |
| YOff | 전체 디바이스 이미지의 맨 위 라인을 기준으로 한 이미지의 수직 오프셋을 픽셀 단위로 나타내는 24비트 값입니다. 이 값은 라인 스캔 이미지의 경우 0으로 설정됩니다. |
| DSizeL | 이미지 라인당 데이터 워드 수를 나타내는 24비트 값입니다. |
| PixelF | Pixel Format을 나타내는 16비트 값입니다. |
| TapG | 탭 지오메트리를 나타내는 16비트 값입니다. |
| Flags | 이미지 플래그입니다. |
| x-Mirror | (아직 사용되지 않음) 들어오는 이미지가 x축으로 미러링되었는지 여부를 설명합니다. |
| y-Mirror | (아직 사용되지 않음) 들어오는 이미지가 y축으로 미러링되었는지 여부를 설명합니다. |
| HeaderError |
1: 이미지 헤더에 오류가 있으며 프레임이 손실된 것으로 선언됩니다. 오퍼레이터 출력 데이터 스트림에 해당하는 이미지 데이터가 존재하지 않습니다. 0: 이미지 헤더가 올바르며 오퍼레이터 출력 데이터 스트림에 해당하는 이미지 데이터가 존재합니다. |
![]() |
이미지 프로토콜: 면취 및 라인 스캔 카메라 |
|---|---|
|
카메라 오퍼레이터 출력에 이미지 프로토콜이 미치는 영향에는 두 가지가 있습니다.
CameraScanMode 파라미터는 CXP 헤더에서 읽어온 카메라 유형을 항상 보여줍니다. O.Img Protocol이 VALT_LINE1D로 설정된 경우 처리를 위해 YSize가 무시되며, 오퍼레이터는 들어오는 모든 데이터를 끝없는 라인 스트림으로 출력합니다. 이미지 프로토콜이 VALT_IMAGE2D로 설정된 경우 YSize=0 역시 끝없는 라인 스트림을 유발하여 O Max Img Height를 초과하는 이미지로 이어집니다. 지나치게 큰 이미지는 디자인 내에서 CxpCamera 오퍼레이터를 따르는 오퍼레이터에서 정의되지 않은 동작을 유발할 수 있습니다. 이를 방지하려면 예를 들어 SplitImage 오퍼레이터를 사용하여 들어오는 라인 스트림을 여러 이미지로 분할하는 것이 좋습니다. |
Device Resource Usage
오퍼레이터는 파라미터 ConnectionCount의 선택에 따라 CameraPort 타입의 리소스를 하나 이상 사용합니다. 이벤트 시스템의 경우 EventPort 타입의 리소스가 사용됩니다. ConnectionCount가 X4(쿼드 채널)로 설정된 경우 리소스 대화 상자는 다음과 같습니다.

![]() |
이미지 너비 및 이미지 높이 수정 |
|---|---|
|
출력 링크의 최대 이미지 너비 및 높이 속성을 통해 너비와 높이를 카메라 고유 설정에 맞게 조정할 수 있습니다. 단, 연산자 포트 O의 최대 이미지 너비는 포트 O의 Parallelism으로 나누어 떨어져야 합니다. 따라서 최대 이미지 너비가 포트 O의 Parallelism으로 나누어 떨어지도록 하십시오! |
Error Handling and Event System
오퍼레이터가 수신된 재구성된 프레임이 CXP 이미지 헤더에서 카메라가 알린 것보다 크거나 작다는 것을 감지하면 안전 회로가 활성화됩니다. 그러면 오퍼레이터가 초과하는 픽셀과 라인을 잘라내어 후속 처리 파이프라인이 이미지 헤더에 정의된 프레임 크기를 항상 인식할 수 있도록 합니다. 수신된 프레임의 치수가 이미지 헤더에 지정된 것보다 작은 경우, 오퍼레이터는 이미지 헤더에 정의된 지정된 프레임 치수를 달성하기 위해 수신된 프레임을 정의되지 않은 데이터로 채웁니다. 더 작은 프레임을 채우면 후속 프레임이 손실될 수 있습니다. 손실은 이벤트별로 소프트웨어에 보고됩니다(다음 단락 참조). 크기 불일치 또한 이벤트를 발생시킵니다.
For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

-
word [0]:
-
bits [0:15]: 이벤트가 발생한 CXP 이미지 태그.
-
-
word [1]:
-
비트 [8:15]: 이벤트가 발생한 스트림 ID.
-
bits [0:7]: 예약됨, 무시함.
-
-
word [2]:
-
bit [0]: CRC 오류 발생.
-
비트 [1]: 이미지 헤더에서 스트림 마커 오류가 감지되었습니다.
-
bit [2]: 수정할 수 없는 이미지 헤더 오류가 감지됨.
-
bit [3]: 프레임 크기 오류가 감지되었습니다. 즉, CXP 이미지 헤더에 정의된 이미지 크기가 전송된 패킷에서 재구성된 프레임 크기와 일치하지 않습니다. 이는 카메라가 이미지 헤더에는 특정 정보를 입력했으나 헤더에 홍보된 것과 다른 양의 데이터를 전송할 때 발생합니다.
-
bits [4:15]: 예약됨, 무시함.
-
-
word [3]:
-
bit [0]: 이벤트 유형, 0 = Corrupted Entity, 1 = Lost Entity.
-
Corrupted Entity는 프레임 내에서 오류가 발생했으며 해당 프레임이 이미 VisualApplets 파이프라인으로 소싱되었음을 의미합니다.
-
Lost Entity는 프레임이 후속 오퍼레이터로 전달되기 전에 오류가 발생하여 카메라 오퍼레이터에 의해 프레임이 폐기되었음을 의미합니다.
-
손상된 엔티티가 관찰되면 오퍼레이터는 후속 오퍼레이터가 정의되지 않은 동작을 유발하지 않도록 CXP 이미지 헤더 정의에 따라 프레임을 채웁니다. 이 채우기 작업 중에 새 프레임이 도착하여 손실될 수 있습니다. 손실된 엔티티 이벤트는 카메라가 프레임 태그에 따라 간격을 두고 데이터를 전송할 때도 발생합니다.
-
-
비트 [1]: Corrupted Entity 타입의 이벤트 손실이 발생했습니다. 이는 Corrupted Entity 타입의 이전 이벤트가 손실되었음을 의미합니다. 이는 런타임 소프트웨어가 이벤트에 반응하지 않고 내부 이벤트 대기열이 가득 찼을 때 발생합니다.
-
비트 [2]: Lost Entity 타입의 이벤트 손실이 발생했습니다. 이는 Lost Entity 타입의 이전 이벤트가 손실되었음을 의미합니다. 이는 런타임 소프트웨어가 이벤트에 반응하지 않고 내부 이벤트 대기열이 가득 찼을 때 발생합니다.
-
비트 [3:15]: 손실된 Lost Entity 이벤트의 양.
-
이벤트에는 손상된 엔티티용 이벤트와 손실된 엔티티용 이벤트의 두 가지 유형이 있습니다. 워드 3의 비트 0은 발생한 이벤트의 종류를 나타냅니다. 이벤트 버퍼가 가득 차면 이벤트가 손실될 수 있습니다. 손상된 엔티티를 나타내는 이벤트가 손실되면 워드 3의 비트 1이 설정됩니다. 손실된 엔티티를 나타내는 이벤트가 손실되면 워드 3의 비트 2가 설정되며 비트 3부터 15까지는 프레임 손실을 나타내는 손실된 이벤트의 수를 제공합니다. 비트 2가 설정되어 있지만 Counter가 0인 경우, 이는 Counter 오버플로가 발생했음을 의미합니다.
모든 이벤트는 소프트웨어 인터럽트를 유발합니다. 이벤트 수를 줄이기 위해 동일한 프레임 태그를 가진 여러 이벤트가 하나로 병합될 수 있습니다. 이 경우 일부 오류 플래그가 결합됩니다. 이벤트가 손실된 경우, 손실된 이벤트 이전의 이벤트에는 손실된 이벤트에 대한 정보가 포함되며 동일한 프레임 태그를 가진 추가 이벤트와 병합될 수 없습니다.
CRC 오류로 인해 발생한 이벤트는 CRC 오류가 발생하는 프레임과 정확히 관련되지 않을 수 있는 프레임 태그를 보고합니다. 프레임 태그는 이전 프레임 또는 다음 프레임의 것일 수 있습니다. 이는 카메라이 2개 이상의 프레임 간 전환을 포함하는 CXP 패킷을 보낼 때만 발생할 수 있습니다. CRC 계산은 패킷 끝에서 완료되지만, 스트림 데이터는 즉석에서(on-the-fly) 재구성됩니다. 즉, 오퍼레이터가 이미 이전 프레임을 보낸 후에 CRC 오류가 감지되는 상황이 발생할 수 있습니다. 카메라 패킷에 진행 중인 프레임의 끝과 다음 프레임의 시작 데이터가 모두 포함되지 않은 정상적인 상황에서는 CRC 오류 중의 프레임 태그가 항상 정확합니다. 완전한 프레임 스트림 데이터가 최대 패킷 크기인 8k 미만인 기타 모든 경우의 경우, 1개의 패킷 내에서 1개의 프레임 오버랩만 있을 수 있습니다. 이 경우 소프트웨어 애플리케이션은 프레임 태그 - 1인 이전 프레임과 프레임 태그 + 1인 다음 프레임도 잠재적으로 손상된 것으로 간주해야 합니다.
|
If O.Img Protocol is set to VALT_LINE1D, the YSize value in the CXP header is ignored for processing and the operator outputs all incoming data as endless stream of lines. If the image protocol is set to VALT_IMAGE2D, YSize=0 (line scan camera) also leads to an endless stream of lines which results in images that exceed O.Max.Img.Height. |
| ConnectionCount | |
|---|---|
| Type | Static Write 파라미터 |
| Default | X1 |
| Range | {X1, X2, X4} |
|
매개변수 ConnectionCount은 CXP 링크에 집계된 CXP 레인의 수를 정의합니다. 사용된 연결 포트의 인덱스는 CameraPort 유형의 리소스에 의해 처리됩니다. 포트 리소스의 수는 연결 수와 일치합니다(예: X2: 2개의 CameraPort 리소스 항목). 듀얼 카메라 앱릿 등 둘 이상의 CxpCamera 연산자를 인스턴스화할 때, 동일한 인덱스를 가진 여러 리소스가 사용되거나 소비된 CameraPort 리소스 수가 최대값인 4를 초과하면 리소스 충돌이 발생할 수 있습니다. 이 경우 디자인 규칙 검사에서 오류가 보고됩니다. |
|
| ResetStatus | |
|---|---|
| Type | Dynamic Write 파라미터 |
| Default | Off |
| Range | {Off, On} |
|
매개변수 ResetStatus는 카메라 통계, 즉 오류 카운터를 재설정합니다. |
|
| UsedConnections | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | {1,2,4} |
|
매개변수 UsedConnections는 런타임에 검색 소프트웨어에 의해 구성된 CXP 레인의 양을 보여줍니다. |
|
| PacketTagErrorCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
The parameter PacketTagErrorCount shows how many received packets have a tag that is non-compliant with the expected tag according to the CXP standard. In particular this value is counting up when gaps are observed in following stream packet tag enumerations. The parameter is 13 bit wide, where the bits [11:0] represent the actual counter value and the bit [12] stands for the counter overflow. When the overflow bit is set, the counter value shall be treated as don't care. |
|
| ImageTag 오류 개수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 파라미터는 이미지 헤더 태그, CXP 표준에 따른 예상 태그, 그리고 수신된 태그 간에 불일치가 발생하는 횟수를 카운트합니다. 이 파라미터는 13비트 너비이며, [11:0] 비트는 실제 Counter 값을 나타내고 [12] 비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, Counter 값은 무시해도 됩니다. |
|
| StreamIdErrorCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 파라미터는 스트림 패킷의 수신된 Stream-ID 값이 이미지 헤더에 지정된 Stream-ID 값과 일치하지 않는 횟수를 카운트합니다. 이 파라미터는 13비트 너비이며, [11:0] 비트는 실제 Counter 값을 나타내고 [12] 비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, Counter 값은 무시해도 됩니다. |
|
| 수정된 오류 수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 파라미터는 이미지 헤더 또는 라인 마커에서 감지된 오류 중 수정된 횟수를 카운트합니다. 이 파라미터는 13비트 너비이며, [11:0] 비트는 실제 Counter 값을 나타내고 [12] 비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, Counter 값은 무시해도 됩니다. |
|
| UncorrectedErrorCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 파라미터는 동일 바이트 내의 다중 비트 오류로 인해 이미지 헤더 또는 라인 마커에서 감지된 오류 중 수정되지 못한 횟수를 카운트합니다. 이 파라미터는 13비트 너비이며, [11:0] 비트는 실제 Counter 값을 나타내고 [12] 비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, Counter 값은 무시해도 됩니다. |
|
| 패킷 버퍼 오버플로 횟수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 파라미터는 집계 모드(aggregated mode)의 채널 본딩에서 패킷 버퍼 오버플로가 발생하는 횟수를 카운트합니다. 이 파라미터는 ConnectionCount = X2 또는 X4인 경우에만 유효합니다. 이 파라미터는 13비트 너비이며, [11:0] 비트는 실제 Counter 값을 나타내고 [12] 비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, Counter 값은 무시해도 됩니다. |
|
| 패킷 버퍼 오버플로 원본 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0x0 : 0xf] |
|
이 파라미터는 잠재적인 4개의 CXP 채널 중 패킷 버퍼 오버플로가 발생한 채널을 조회하기 위한 비트 마스크를 구현합니다. 파라미터 너비는 ConnectionCount 파라미터에 따라 다릅니다. X1 모드에서는 파라미터 너비가 1비트이고, X2 모드에서는 2비트이며, X4 모드에서는 4비트입니다. 순서는 다음과 같습니다: LSB = 가장 낮은 CXP 채널 번호, MSB = 운영자가 할당한 가장 높은 CXP 채널 번호. |
|
| 카메라 스캔 모드 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | {area,line} |
|
The received image header carries the information whether the stream is for the area scan (YSize > 0) or for the line scan (YSize = 0) applications. This parameter shows the last valid received stream image header information. |
|
| MarkerErrorCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 8191] |
|
이 파라미터는 CXP 스트림 마커와 헤더 또는 라인 마커의 시퀀스가 올바르지 않은 횟수를 카운트합니다. 이 파라미터는 13비트 너비이며, [11:0] 비트는 실제 Counter 값을 나타내고 [12] 비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정된 경우, Counter 값은 무시해도 됩니다. |
|
| UnexpectedStartupData | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | {false, true} |
|
이 파라미터는 운영자 리셋 후 첫 번째 데이터 값이 예상치 못한 값(즉, 이전에 수신된 이미지 헤더가 없음)인 오류 상황을 감지합니다. 이 상황은 카메라 또는 프레임 그래버 펌웨어의 결함 구현이나 검색(discovery) 절차의 잘못된 소프트웨어 제어로 인해 발생할 수 있습니다. 또한 이론적으로는 카메라의 하드웨어 결함으로 인해 이러한 상황이 발생할 수도 있습니다. |
|
| FrameLostCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 33554431] |
|
이 파라미터는 이미지 취득 중 손실되어 VisualApplets 파이프라인으로 전송되지 않은 프레임 수를 카운트합니다. 이미지 헤더에서 에러가 감지되거나 프레임이 다른 프레임과 겹칠 때 프레임이 손실됩니다. 이 파라미터는 25비트 너비이며, [23:0]비트는 실제 Counter 값을 나타내고 [24]비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정되면 Counter 값은 무시해도 됩니다. |
|
| FrameCorruptedCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | |
| Range | [0 : 33554431] |
|
이 파라미터는 이미지 취득 중 손상된 프레임을 카운트합니다. 손상된 프레임은 에러 픽셀이 포함된 상태로 VisualApplets 파이프라인으로 전송되는 프레임을 의미합니다. 이 파라미터는 25비트 너비이며, [23:0]비트는 실제 Counter 값을 나타내고 [24]비트는 Counter 오버플로를 나타냅니다. 오버플로 비트가 설정되면 Counter 값은 무시해도 됩니다. |
|
The use of operator CxpCamera is shown in the following examples:
-
예시 - 기본 습득
-
예시 - 기본 습득
-
'Area Scan Trigger for imaFlex CXP-12 Quad'
CoaXPress12용 영역 스캔 트리거가 제공됩니다. 외부 소스, 내부 주파수 생성기 또는 소프트웨어 트리거 펄스를 트리거 생성에 사용할 수 있습니다.
-
'Line Scan Trigger for imaFlex CXP-12 Quad Using Signal Operators'
CoaXPress12용 라인 스캔 트리거가 제공됩니다. 이 트리거에는 캡처 게이트를 사용하는 이미지 트리거와 다기능 라인 트리거가 포함됩니다. 트리거 생성을 위해 외부 소스, 내부 주파수 생성기 또는 소프트웨어 트리거 펄스를 사용할 수 있습니다.

![[중요]](../common/images/admon/important.png)

이전

